-- edu 24/02/2022

CREATE OR REPLACE FUNCTION public.aacreatevistas(
	)
    RETURNS boolean
    LANGUAGE 'plpgsql'
    COST 100
AS $BODY$
DECLARE
  cursor_vistas REFCURSOR;
  vEsquema varchar;
  vVista   varchar;
  vSQL     varchar;
  
BEGIN

  UPDATE VISTAS SET ORDEN = 999;
  UPDATE VISTAS SET ORDEN = 500 WHERE esquema = 'public';

  UPDATE VISTAS SET ORDEN = 10 WHERE esquema = 'public' and vista = 'crfvencimientos';
  UPDATE VISTAS SET ORDEN = 20 WHERE esquema = 'public' and vista = 'crfprorrateadoxctb';
  UPDATE VISTAS SET ORDEN = 30 WHERE esquema = 'public' and vista = 'vval_m';
  UPDATE VISTAS SET ORDEN = 31 WHERE esquema = 'public' and vista = 'vval_p';

  UPDATE VISTAS SET ORDEN = 40  WHERE esquema = 'public' and vista = 'cuboauxctbrubros';
  UPDATE VISTAS SET ORDEN = 50  WHERE esquema = 'public' and vista = 'cuboauxctbrubrosnombre';
  UPDATE VISTAS SET ORDEN = 60  WHERE esquema = 'public' and vista = 'cubobalanceaxi1';
  UPDATE VISTAS SET ORDEN = 70  WHERE esquema = 'public' and vista = 'cubobalanceaxi2';
  UPDATE VISTAS SET ORDEN = 80  WHERE esquema = 'public' and vista = 'cubobalanceaxi3';
  UPDATE VISTAS SET ORDEN = 90  WHERE esquema = 'public' and vista = 'cubobalanceaxi4';
  UPDATE VISTAS SET ORDEN = 100 WHERE esquema = 'public' and vista = 'cubobalanceaxi5';
  UPDATE VISTAS SET ORDEN = 110 WHERE esquema = 'public' and vista = 'cubobalanceaxi6';
  UPDATE VISTAS SET ORDEN = 120 WHERE esquema = 'public' and vista = 'cubobalancevmov';
  UPDATE VISTAS SET ORDEN = 130 WHERE esquema = 'public' and vista = 'cubobalance';

  UPDATE VISTAS SET ORDEN = 150 WHERE esquema = 'public' and vista = 'cubosaldospad_aux';

  UPDATE VISTAS SET ORDEN = 157 WHERE esquema = 'public' and vista = 'vartm';
  UPDATE VISTAS SET ORDEN = 158 WHERE esquema = 'public' and vista = 'vartmf';
  UPDATE VISTAS SET ORDEN = 159 WHERE esquema = 'public' and vista = 'vstkvis';
  UPDATE VISTAS SET ORDEN = 160 WHERE esquema = 'public' and vista = 'vstkvisarc';
  UPDATE VISTAS SET ORDEN = 161 WHERE esquema = 'public' and vista = 'vartmconorigen_i';
  UPDATE VISTAS SET ORDEN = 162 WHERE esquema = 'public' and vista = 'vartmconorigen';
  UPDATE VISTAS SET ORDEN = 163 WHERE esquema = 'public' and vista = 'cubosaldosnodosartmbasica';

  UPDATE VISTAS SET ORDEN = 170 WHERE esquema = 'public' and vista = 'liq_candidatos';
  UPDATE VISTAS SET ORDEN = 171 WHERE esquema = 'public' and vista = 'liq_registros_base';

  UPDATE VISTAS SET ORDEN = 700 WHERE esquema = 'public' and vista = 'brete_cheap';
  UPDATE VISTAS SET ORDEN = 701 WHERE esquema = 'public' and vista = 'brete_cheap_total';
  UPDATE VISTAS SET ORDEN = 702 WHERE esquema = 'public' and vista = 'brete_cheap_total_total';
  
  UPDATE VISTAS SET ORDEN = 704 WHERE esquema = 'public' and vista = 'brete_flujo';
  UPDATE VISTAS SET ORDEN = 705 WHERE esquema = 'public' and vista = 'brete_flujo_2015';
  UPDATE VISTAS SET ORDEN = 706 WHERE esquema = 'public' and vista = 'brete_flujo_total';
  UPDATE VISTAS SET ORDEN = 707 WHERE esquema = 'public' and vista = 'brete_flujo_total_total';

  UPDATE VISTAS SET ORDEN = 600 WHERE esquema = 'servicios' and vista = 'iva_ventas_por_actividad1';

  UPDATE VISTAS SET ORDEN = 500 WHERE esquema = 'web' and vista = 'vcontrol_com_valacc';

  UPDATE VISTAS SET ORDEN = 650 WHERE esquema = 'wpipes' and vista = 'pipe_artm';
  UPDATE VISTAS SET ORDEN = 652 WHERE esquema = 'wpipes' and vista = 'pipe_conm';
  UPDATE VISTAS SET ORDEN = 653 WHERE esquema = 'wpipes' and vista = 'pipe_totales_netos_e_ivas';

  UPDATE VISTAS SET ORDEN = 800 WHERE esquema = 'olap' and vista = 'ft_cubobalance_php';

  UPDATE VISTAS SET ORDEN = 500 WHERE esquema = 'olap_mantis' and vista = 'ft_incis_y_ventas';
  UPDATE VISTAS SET ORDEN = 400 WHERE esquema = 'olap_mantis' and vista = 'vevents_dblink';
  UPDATE VISTAS SET ORDEN = 300 WHERE esquema = 'olap_mantis' and vista = 'd_usr_abaco';
  UPDATE VISTAS SET ORDEN = 200 WHERE esquema = 'olap_mantis' and vista = 'user_dblink';
  UPDATE VISTAS SET ORDEN = 210 WHERE esquema = 'olap_mantis' and vista = 'empleados_dblink';
  UPDATE VISTAS SET ORDEN = 220 WHERE esquema = 'olap_mantis' and vista = 'empleados_horasxmes_dblink';
  UPDATE VISTAS SET ORDEN = 220 WHERE esquema = 'olap_mantis' and vista = 'empleados_sueldos_x_mes_dblink';
  UPDATE VISTAS SET ORDEN = 220 WHERE esquema = 'olap_mantis' and vista = 'ventas_x_mes_dblink';
  UPDATE VISTAS SET ORDEN = 220 WHERE esquema = 'olap_mantis' and vista = 'pad_dblink';

  OPEN cursor_vistas FOR
       SELECT esquema, vista, sql
       FROM public.vistas 
       ORDER BY orden, esquema, vista;

  FETCH cursor_vistas INTO vEsquema, vVista, vSQL;
  LOOP
    EXIT WHEN (NOT FOUND);
    vSQL = replace(vSQL,'postgres','abacouser');
    EXECUTE 'CREATE OR REPLACE VIEW ' || vEsquema || '.' || vVista || ' AS ' || vSQL;
    FETCH cursor_vistas INTO vEsquema, vVista, vSQL;
  END LOOP;
  CLOSE cursor_vistas;
  
  RETURN True;
END;
$BODY$;

ALTER FUNCTION public.aacreatevistas() OWNER TO abacouser;

-- ==================================
SELECT aaVersion('472.02', '472.01');
-- ==================================